
PROJECT=lcd-i2c
PORT="/dev/ttyACM0"
CLOCK="8000000UL"
GCC_DEVICE="attiny85"
PGM_DEVICE="t85"
PGM_PROTO="avrispv2"
GCC_OPTIMISATION="-Os"
#GCC_OPTIMISATION="-O2"

echo "compile program"
if avr-gcc -g $GCC_OPTIMISATION -Wall -mcall-prologues -DF_CPU=$CLOCK -mmcu=$GCC_DEVICE -c -o $PROJECT.o $PROJECT.c
then
  echo "ok"
else
  echo "failed!"
  exit 1
fi

echo "create object file"
if avr-gcc -g $GCC_OPTIMISATION -Wall -mcall-prologues -DF_CPU=$CLOCK -mmcu=$GCC_DEVICE $PROJECT.o -o $PROJECT.obj
then
  echo "ok"
else
  echo "failed!"
  exit 1
fi

echo "convert object file to hex file"
if avr-objcopy  -R .eeprom -O ihex $PROJECT.obj $PROJECT.hex
then
  echo "ok"
else
  echo "failed!"
  exit 1
fi

echo "erase chip"
if avrdude -c $PGM_PROTO -P $PORT -p $PGM_DEVICE -e
then
  echo "ok"
else
  echo "failed!"
  exit 1
fi

echo "write program to chip"


# Writing 0xE2 to the Fuse Low Byte disables the CKDIV8 (use 0x62 for 1MHz)
# Writing 0xE1 to the Fuse Low Byte to use internal PLL to run at 16MHz
# you only need to do this once
# avrdude -c %PGM_PROTO% -P %PORT% -p %PGM_DEVICE% -U flash:w:%PROJECT%.hex  -U lfuse:w:0xE1:m
#if avrdude -c $PGM_PROTO -P $PORT -p $PGM_DEVICE -U flash:w:$PROJECT.hex -U lfuse:w:0xE2:m

if avrdude -c $PGM_PROTO -P $PORT -p $PGM_DEVICE -U flash:w:$PROJECT.hex 
then
  echo " ***  READY ***"
else
  echo "failed!"
  exit 1
fi
